package com.toommi.refuse.service;

import com.toommi.refuse.entity.RecyclablePrice;
import com.toommi.refuse.exception.AdminException;
import com.toommi.refuse.exception.RecycleRecordException;
import com.toommi.refuse.model.CalculateModel;
import com.toommi.refuse.model.RecyclablePriceModel;

import java.util.List;

/**
 * ..
 * 可回收物价格操作
 *
 * @author yangg
 * @since 2019-07-31 11:31
 */
public interface RecyclablePriceService {

    /**
     * 新增回收物价格
     *
     * @param recyclablePrice 回收物价格
     */
    void addRecyclablePrice(RecyclablePrice recyclablePrice) throws AdminException;

    /**
     * 查询回收物价格
     * 若类型不为空而小区为空，则返回该类型回收物在所有小区的价格
     * 若小区不为空而类型为空，则返回该小区所有回收物类型的价格
     * 若两者皆不为空，则返回指定小区内指定回收物类型的价格
     *
     * @param refuseTypeId    回收物类型id
     * @param neighbourhoodId 小区id
     * @param date            指定日期
     * @return 回收物价格
     */
    List<RecyclablePriceModel> findRecyclablePrice(long refuseTypeId, long neighbourhoodId, String date);

    /**
     * 修改回收物价格
     *
     * @param recyclablePrice 回收物价格
     */
    void updateRecyclablePrice(RecyclablePrice recyclablePrice) throws AdminException;

    /**
     * 可回收物价格计算
     *
     * @param qrcode          扫码获得的二维码-户号code
     * @param subRefuseTypeId 可回收垃圾子分类id
     * @param weight          重量
     * @return 总价
     */
    CalculateModel calculateMoney(String qrcode, int subRefuseTypeId, double weight) throws RecycleRecordException;
}
